/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.model;

import java.io.Serializable;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author edilson
 */
@Entity
@Table(name = "endereco_do_associado")
@XmlRootElement
//@NamedQueries({
//    @NamedQuery(name = "EnderecoDoAssociado.findAll", query = "SELECT e FROM EnderecoDoAssociado e"),
//    @NamedQuery(name = "EnderecoDoAssociado.findByAssociadoid", query = "SELECT e FROM EnderecoDoAssociado e WHERE e.enderecoDoAssociadoPK.associadoid = :associadoid"),
//    @NamedQuery(name = "EnderecoDoAssociado.findByEnderecoid", query = "SELECT e FROM EnderecoDoAssociado e WHERE e.enderecoDoAssociadoPK.enderecoid = :enderecoid"),
//    @NamedQuery(name = "EnderecoDoAssociado.findByTipoEndereco", query = "SELECT e FROM EnderecoDoAssociado e WHERE e.tipoEndereco = :tipoEndereco"),
//    @NamedQuery(name = "EnderecoDoAssociado.findByPrincipal", query = "SELECT e FROM EnderecoDoAssociado e WHERE e.principal = :principal")})
public class EnderecoDoAssociado implements Serializable {
	private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id = 0;
    @Column(name = "tipo_endereco")
    private String tipoEndereco;
    @Column(name = "principal")
    private Boolean principal;
    @ManyToOne
    @JoinColumn(name = "associado", referencedColumnName = "id")
    private Associado associado;
    
    @ManyToOne
    @JoinColumn(name = "endereco", referencedColumnName = "id")
    private Endereco endereco;
    
    public EnderecoDoAssociado() {
    }

   	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getTipoEndereco() {
		return tipoEndereco;
	}

	public void setTipoEndereco(String tipoEndereco) {
		this.tipoEndereco = tipoEndereco;
	}

	public Boolean getPrincipal() {
		return principal;
	}

	public void setPrincipal(Boolean principal) {
		this.principal = principal;
	}

//	public Associado getAssociado() {
//		return associado;
//	}
//
//	public void setAssociado(Associado associado) {
//		this.associado = associado;
//	}
//
//	public Endereco getEndereco() {
//		return endereco;
//	}
//
//	public void setEndereco(Endereco endereco) {
//		this.endereco = endereco;
//	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
//		result = prime * result
//				+ ((associado == null) ? 0 : associado.hashCode());
//		result = prime * result
//				+ ((endereco == null) ? 0 : endereco.hashCode());
		result = prime * result + (int) (id ^ (id >>> 32));
		result = prime * result
				+ ((principal == null) ? 0 : principal.hashCode());
		result = prime * result
				+ ((tipoEndereco == null) ? 0 : tipoEndereco.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		EnderecoDoAssociado other = (EnderecoDoAssociado) obj;
//		if (associado == null) {
//			if (other.associado != null)
//				return false;
//		} else if (!associado.equals(other.associado))
//			return false;
//		if (endereco == null) {
//			if (other.endereco != null)
//				return false;
//		} else if (!endereco.equals(other.endereco))
//			return false;
		if (id != other.id)
			return false;
		if (principal == null) {
			if (other.principal != null)
				return false;
		} else if (!principal.equals(other.principal))
			return false;
		if (tipoEndereco == null) {
			if (other.tipoEndereco != null)
				return false;
		} else if (!tipoEndereco.equals(other.tipoEndereco))
			return false;
		return true;
	}
	
	 @Override
	    public String toString() {
	        return "br.org.cm.assutef.entities.EnderecoDoAssociado[ enderecoDoAssociadoPK=" + id + " ]";
	    }

	public Associado getAssociado() {
		return associado;
	}

	public void setAssociado(Associado associado) {
		this.associado = associado;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	
	
}
